﻿#define _CRT_SECURE_NO_WARNINGS 1

//⾃幂数
//⾃幂数是指⼀个数的位数的n次⽅等于这个数本⾝。例如，153是⾃幂数，因为 1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153。
//我们可以使⽤⼀个循环遍历 1~100000 并检查每个数是否为⾃幂数。

#include<stdio.h>
#include<math.h>

int main()
{
	long long i = 0;
	long long j = 0;

	for (i = 1; i < 100000; i++)
	{
		int temp = 0;
		int num = 0;
		int count = 0;
		unsigned long long sum = 0;
		//1.计算i的位数
		for (j = i; j; j /= 10)
		{
			j / 10;
			num++;
		}
		//2.计算i每位数的和
		for (j = i; j; j /= 10)
		{
			temp = j % 10;
			count++;
			sum += pow(temp, num);
		}
		//3.判断是否相等，并输出i
		if (sum == i)
		{
			printf("%d\n", i);
		}
	}

	return 0;
}